// 在 Node 中，每个模块内部都有一个自己的 module 对象
// 该 module 对象中，有一个成员叫 exports 也是一个对象
// 也就是说如果你需要对外导出成员，只需要把导出的成员挂在到 module.exports 中
// 我们发现 每次导出 使用 module.exports.xxx = xxx 的方式挺麻烦
// 所以，Node 为了简化你的操作，专门提供了一个变量： exports = module.exports

// var module = {
//     exports: {
//         foo: 'bar',
//         add: function
//     }
// }

// 也就是说 在模块中还有这样一段代码
// var exports = module.exports

// 两者一致，那就说明可以使用任意一种方式来导出对象
console.log(exports === module.exports) // true

module.exports.foo = 'bar'

module.exports.add = function(x, y) {
    return x + y
}

// 当模块导出单个成员的时候，直接给 exports 赋值是不起作用的
// 这样赋值只是给 exports 重新赋值，而不是指向 module.exports 这个对象了
// 所以这样导出导致不起作用
// exports = 'hello'

// 如果给 module.exports 重新赋值
module.exports = 'hello'
exports.foo = 'world' // 再使用 exports.xxx 赋值不起作用

// 谁来 require 我，谁就得到 module.exports 这个对象
// Node 默认在代码的最后一句
// 一定要注意：最后 return 的是 module.exports 而不是 exports
// 所以 直接给 exports 赋值不管用
// return module.exports